function totalFruit(fruits: number[]): number {
    // 左指针
    let l = 0;
    // 记录最大长度
    let maxLen = 0;
    // 记录每次遇到第三种水果时，上一种水果的起始位置
    let n = 0
    // 存两种水果的篮子数组
    let arr = [fruits[l]]

    for(let r = 0; r < fruits.length; r++){

        // arr篮子中是否存在当前水果
        if(!arr.includes(fruits[r])){
            // 如果不存在，且arr中只有一种水果，就放入第二种水果
            if(arr.length <= 1){
                arr[1] = fruits[r]
            }else{
                // 如果arr中有两种水果，且遇到了第三种水果，更新第一种水果的的起始位置
                l = n
                // 更新arr中的两种水果
                // r就是第三种水果的品种
                // r-1 就是上一种水果的品种，品种不用记录起始位置。
                arr[0] = fruits[r-1]
                arr[1] = fruits[r]
            }
        }
        /*
            n存的是fruits每次水果发生变化且是第一次出现时的索引，例如：
            [0,6,6,6,1,4,4,6]：n记录的是：0、1、4、5、7
        */
       
        if(fruits[r] !== fruits[n]){
            n = r
        }
   
        maxLen = Math.max(maxLen,r-l+1)
    }
        return maxLen
};